package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.entity.system.UserBoatOrderInfo;

import java.util.List;

/**
 * 船只与订单信息关联Service接口
 *
 * @author zjw
 * @date 2023-08-24
 */
public interface IUserBoatOrderInfoService {
    /**
     * 查询船只与订单信息关联
     *
     * @param boatId 船只与订单信息关联主键
     * @return 船只与订单信息关联
     */
    public UserBoatOrderInfo selectBoatOrderInfoByBoatId(Long boatId);

    /**
     * 查询船只与订单信息关联列表
     *
     * @param userBoatOrderInfo 船只与订单信息关联
     * @return 船只与订单信息关联集合
     */
    public List<UserBoatOrderInfo> selectBoatOrderInfoList(UserBoatOrderInfo userBoatOrderInfo);

    /**
     * 新增船只与订单信息关联
     *
     * @param userBoatOrderInfo 船只与订单信息关联
     * @return 结果
     */
    public int insertBoatOrderInfo(UserBoatOrderInfo userBoatOrderInfo);

    /**
     * 修改船只与订单信息关联
     *
     * @param userBoatOrderInfo 船只与订单信息关联
     * @return 结果
     */
    public int updateBoatOrderInfo(UserBoatOrderInfo userBoatOrderInfo);

    /**
     * 批量删除船只与订单信息关联
     *
     * @param boatIds 需要删除的船只与订单信息关联主键集合
     * @return 结果
     */
    public int deleteBoatOrderInfoByBoatIds(Long[] boatIds);

    /**
     * 删除船只与订单信息关联信息
     *
     * @param boatId 船只与订单信息关联主键
     * @return 结果
     */
    public int deleteUserBoatOrderInfoByUserId(Long boatId);

    List<UserBoatOrderInfo> selectUserBoatOrderInfoListByBoatIdentityId(String boatIdentityId);

    UserBoatOrderInfo selectUserBoatOrderInfoByUserId(Long userId);

    /**
     * 根据船只出厂id查找到订单状态为"使用中"的UserBoatOrderInfo对象。如果有多个的话则返回第一个。
     *
     * @param boatIdentityId
     * @return
     */
    UserBoatOrderInfo getUserBoatOrderInfoOfUsingStatusByBoatIdentityId(String boatIdentityId);
}
